//GENERICO
//USO: mantiene los controles y las funciones de actualizacion de los botones de zoom (+ y -)

//para la funcion pasada como parametro, puede accederse al elemento HTML mediante la variable _domAreaHTML

function zoomInput(_domZoomIn, _domZoomOut,  _updateFunction){
	
	var _mouseDOWN = false;
	var _call = null; //funcion que se llama si se mantiene presionado el boton del mouse
				     //dentro del area del elemento
//	var _domZoomOut = $("#"+zoomOutID); //TODO 
//	var _domZoomIn = $("#"+zoomInID); //TODO 
//	var _strZoomInOut = "#"+zoomOutID+", #"+zoomInID;
	var _this = this;
//	var _updateFunction = updateFunction;
//	var _controls = controls;
	var _str = "#"+$(_domZoomIn).attr("id")+", #"+$(_domZoomOut).attr("id");
	
	$(_domZoomOut).button({
		text: false,
		icons: {primary: "ui-icon-minusthick"}
	});
	
	$(_domZoomIn).button({
		text: false,
		icons: {primary: "ui-icon-plusthick"}
	});
	
	$(_str).mousedown(function(event){
					_this.mouseDown(event);
					event.preventDefault();
					event.stopPropagation();
				})
				.mouseup(function(event){
					_this.mouseUp();
					event.preventDefault();
					event.stopPropagation();
				})				
				.mouseleave(function(event){
					_this.mouseLeave(event);
					event.preventDefault();
					event.stopPropagation();
				});
	

	this.mouseDown = function(event){
		_mouseDOWN = true;
		this.update(event);
	};
	
	this.mouseUp = this.mouseLeave = function(){ //TODO: no replicar la funcion
		_mouseDOWN = false;
		clearTimeout(_call);
	};	
	
	this.update = function(event){ //TODO el target se puede obtener a partir de 'event'
		
		if (!_mouseDOWN) {
			clearTimeout(_call);
			return
		};
		
		_updateFunction(event);
		
		_call = setTimeout(function() { _this.update(event); }, 20);
	};
}